Many color models have been proposed to formalize color description. In most of these color models, a color is represented as a point in a three-dimensional discrete space. These spaces are very useful for a mathematical manipulation of color, but they are very far from how human beings usually describe this feature.
In fact, in everyday life, when describing an object by its color, people use labels like "green" or "blue", enriched with qualifiers like "deep" or "dark." It can be noticed that a linguistic description is somewhat vague and imprecise. A label identifies a set in a color space. In fact, an object that is given a single label is really made up of many different shades.
What appears to be a lack of precision is a form of approximation that allows persons to deal in a simple and easy way with a big amount of information. Moreover, it would be inconceivable to describe an object by specifying color coordinates for each point in a discrete space, and doing this, would not add any useful information for people.
As said before, a linguistic label in a color space identifies a set inside it; but trying to give a precise definition of this set, is not so simple, because colors gradually tone down in one another, and for some of them it is possible to combine a label only arbitrarily. This shows the real nature of colors expressed in a linguistic form. Colors and fuzzy sets whose membership functions can be defined on any color space. For such a fuzzy set the term "color class" will be used.
Since most color spaces are three-dimensional, the membership functions we are going to define are surfaces in quadrimensional space. There are two main problems in defining these functions. First, since membership functions must be defined on a basis of human perception of colors, for each color class and for each point in the color space the membership value should be chosen by human observers.
Unfortunately color spaces have millions of points and so the second problem is the resulting amount of data, that requires a table with millions of entries for a single class description.
The approach that is used is based on linguistic rules to define a color lass. Rules will refer to a color space distinguishing hue, saturation and lightness. Among these spaces we choose HSV. A description of RGB and HSV color spaces follows.
In the RGB color space a color is represented by the three primary component red, green and blue. This space is shaped as a cube, whose vertices coincide with the pure colors red, green, blue, cyan, magenta, yellow, black and white (see FIG. 1).
The gray scale lays on the diagonal, which joins together the origin (black) and the opposite vertex (white). Monitors, televisions and some other similar visualization devices make use of this color space for visualizing images.
This kind of color representation is different from the way we perceive a color. We generally identify a hue, an intensity and a saturation. The HSV color space represents a color with hue, saturation and value (intensity). The HSV color space has been chosen for the identification of colors. This space can be represented as an upturned cone (see FIG. 2), where the value varies moving on the axis, the saturation varies moving on the radius of the circle and the hue varies with the angle of the circle.
The detection of the skin color class is performed by means of fuzzy sets, defined on H, S and V. In this space a class can be characterized by assertions on the components. For example for a point p and for the blue color class we can say: EQU IF h.sub.p, is blue.sub.h, AND s.sub.p is high.sub.s AND v.sub.p is high.sub.v THEN .sub.p is blue
where h.sub.p, s.sub.p and v.sub.p are the hue, saturation and value of p. While the consequent part of the rule refers to the color class "blue", the antecedent one contains the fuzzy sets blue.sub.h, high.sub.s, and high.sub.v, whose membership functions are defined respectively on H, S and V. Note that high.sub.s and high.sub.v are different fuzzy sets. In fact, the membership functions have different domains, even if they may have the same form.
Once the fuzzy sets in their antecedent part have been defined, they can be used to compute the membership value of p to the class. If u.sub.h, u.sub.s and u.sub.v are the membership function on H, S and V for a given color class, the membership value of a point p with coordinates (h.sub.p, s.sub.p, v.sub.p) to such class is computed as: EQU u.sub.p =T(u.sub.h (h.sub.p), u.sub.s (s.sub.p, u.sub.v (v.sub.p))
where T is the T-norm operator, which implements the "and" logical connector in the sentence.
Membership functions for the fuzzy sets of the antecedent can be experimentally obtained, by observing color variations when changing h, s or v with the aid of some graphical tools. It is also necessary to choose a T-norm operator and the "and" connector in the rules.
It may be observed that the rule-based approach does not give the same freedom in defining color classes, since in general it is not possible to associate arbitrary values to different points of the HSV space. This is true, but on the other hand the ability to have a punctual resolution in membership function definition may not be so useful. Choosing a membership value different from 0 or 1 for an (h, s, v) triplet would be an arbitrary matter, while it is important to hold the intuitive and visual shading of colors. In this approach, with an eight bit component quantization, only three 256 table entries are needed to define the class completely.
Classical image processing operators are usually applied to the full image or to a previously selected part of it. In the latter case the selection is usually done by hand or through selection tools based on some characteristics of the pixel.
Suppose we want to apply some operators to a particular color class in the image. The use of operators that modify hue, saturation or value of selected pixel would allow different color corrections to be applied on different color classes. The region where the operator should work, could be identified by an a-cut extracted from a fuzzy set previously found.
A problem arises when determining the best alfa-level for the cut. The use of a crisp set would produce undesirable and noticeable effects on the borders of the selected region.
A solution to this problem can be found in using soft operators. This kind of operators allows the application to a region identified by a fuzzy set instead of a crisp set. The definition of such an operator 0' in terms of a traditional one 0 follows:
O'(p)==(p)*a.sub.p +p*(1-a.sub.p)
where p is the pixel and ap is its membership value to a color class.
If a=0 the pixel is unmodified, while for a=1 the traditional operator 0 is applied. In any other case 0' will be weighted average between p and 0(p). The average is computed on the color space, separately on each component.
Unfortunately the result of the interpolation depends on the color space, because of the non-linearity of the transformation from a color space to another one. In this particular case the HSV color space is not well suited to this operation, because colors on the path from p to 0(p) are not those expected.
Very good results would be obtained by moving to CIEluv or CIElab color spaces before computing the average. Unfortunately the transformations from HSV to these color spaces are quite complex. Quite good results can be obtained also in the RGB color space, with the advantage of a simpler transformation from HSV.